21.2 Die Subfenster
 
Meistens sind die von einem MDI-Hauptfenster verwalteten Subfenster gleichen Typs. Das soll Sie aber nicht davon abhalten, eine Anwendung zu entwickeln, die mehrere verschiedenartige Subfenster bereitstellt.
Ein Fenster in einer Anwendung, das ein MDI-Hauptfenster enthält, ist nicht automatisch ein Subfenster – es muss erst zu einem solchen mit der Eigenschaft MdiParent erklärt werden.
| public Form MdiParent {get; set;}
|
Der Eigenschaft wird die Referenz auf das MDI-Hauptfenster übergeben.
Subfenster werden meistens aus dem Hauptfenster heraus geöffnet. In der Menüleiste des Hauptfensters befindet sich zu diesem Zweck unter Datei ein Untermenü Neu... Der Code, der im Click-Ereignis dieses Menüpunktes definiert ist, lautet beispielsweise wie folgt:
| // Ereignishandler des Menüelements 'Neu'
|
| private void mnuNeu_Click(object sender, EventArgs e) {
|
| SubForm frm = new SubForm();
|
| frm.MdiParent = this;
|
| frm.Text = "Dokument " + ++documentNumber;
|
| frm.Show();
|
| }
|
In der ersten Anweisung wird das Subfenster, dessen Klassenbezeichner in unserem Beispiel SubForm lautet, instanziiert. In der zweiten Anweisung wird die neue SubForm-Instanz zum untergeordneten Fenster des MDI-Hauptfensters, das mit this referenziert wird, erklärt. Beachten Sie, dass die Eigenschaft MdiParent im Eigenschaftsfenster nicht angeboten wird – diese Anweisung müssen Sie in jedem Fall codieren.
Üblicherweise haben Subfenster einen gleich lautenden Titelleistentext, der sich nur in einem Zähler unterscheidet. Der Zähler im Codefragment (DocumentNumber) ist als privates Klassen-Member in der MDI-Form deklariert und wird mit jedem neuen Subfenster erhöht. Zum Schluss wird das Subfenster mit Show angezeigt.
MDI-Subfenster zeichnen sich durch einige besondere Charakteristiken aus:
|
Sie können mit der Maus an der Titelleiste gegriffen und verschoben werden, aber den Clientbereich des MDI-Hauptfensters können sie nicht verlassen. Stattdessen werden im Hauptfenster Bildlaufleisten angezeigt. |
|
Nach dem Maximieren des MDI-Subfensters nimmt dieses den gesamten Clientbereich des Hauptfensters ein und überdeckt auch alle anderen Subfenster. Dabei werden die drei Titelleistenschaltflächen des maximierten MDI-Subfensters (Maximieren, Minimieren und Schließen) in der Menüleiste des Hauptfensters eingeblendet. Außerdem wird der Text in der Titelleiste des Hauptfensters durch den des Subfensters in eckigen Klammern ergänzt. |
|
In der Regel wird eine minimierte Form in der Taskleiste von Windows abgelegt. Nicht so bei einem MDI-Subfenster, das sich nach dem Minimieren am unteren Containerrand seines Hauptfensters in iconisierter Darstellung zeigt. |
Sowohl beim Aktivieren als auch beim Schließen eines untergeordneten Fensters tritt im MDI-Hauptfenster das Ereignis MdiChildActivate auf:
| public event EventHandler MdiChildActivate;
|
Da der Ereignishandler ein Objekt EventArgs empfängt, stehen keine weiteren Informationen im Zusammenhang mit der Ereignisauslösung zur Verfügung. |